#ifndef MESSAGE_RECEIVER_HPP
#define MESSAGE_RECEIVER_HPP

#include <vector>
#include <boost/shared_ptr.hpp>
#include <boost/enable_shared_from_this.hpp>

class client;

class message_receiver :
    public boost::enable_shared_from_this<message_receiver>
{
public:
    message_receiver();

    virtual void receive_message(const std::wstring& message, boost::shared_ptr<client> sender) = 0;
    static std::stringstream& write_var_string(std::stringstream& stream, const std::string& s);
    static std::stringstream& write_var_strings(std::stringstream& stream, const std::vector<std::string>& s);
    static std::string read_var_string(const std::string& s, const int index);
    static std::vector<std::string> read_var_strings(const std::string& s, const int index);
};

#endif // MESSAGE_RECEIVER_HPP
